#include "ej_bsp_gpio.h"

/* private define -------------------------------------------------------- */

/* private function prototypes ---------------------------------------------- */


/* private variables -------------------------------------------------------- */


/* private function ---------------------------------------------- */
void eMcuGpioConfig(uint32_t pio, BspGpioDir_e dir, BspGpioPull_e pull)
{
	if (pio == NO_CONFIG_PORT)
	{
		return ;
	}
	
	if (pull == E_BSP_GPIO_PULLUP)
	{
		gpio_set_pull_down(pio, 0);
		gpio_set_pull_up(pio, 1);
	}
	else if (pull == E_BSP_GPIO_PULLDOWN)
	{
		gpio_set_pull_down(pio, 1);
		gpio_set_pull_up(pio, 0);
	}
	else
	{
		gpio_set_pull_down(pio, 0);
		gpio_set_pull_up(pio, 0);
	}

	if (dir == E_BSP_GPIO_INPUT)
	{
		gpio_set_direction(pio, 1);
	}
	else
	{
		gpio_set_direction(pio, 0);
	}

	gpio_set_die(pio, 1);

	gpio_set_hd(pio, 0);//看需求是否需要开启强推,会导致芯片功耗大
	gpio_set_hd0(pio, 0);

}

void eMcuGpioWritePin(uint32_t pio, uint8_t status)
{
	if (pio == NO_CONFIG_PORT)
	{
		return ;
	}

	gpio_set_output_value(pio, !!status); //1高0低
}

int eMcuGpioReadPin(uint32_t pio)
{
	if (pio == NO_CONFIG_PORT)
	{
		return 0;
	}

    return gpio_read(pio);
}


/* public function ---------------------------------------------- */
void eBspGpioConfig(uint32_t pio, BspGpioDir_e dir, BspGpioPull_e pull)
{
	eMcuGpioConfig(pio, dir, pull);
}

void eBspGpioWritePin(uint32_t pio, uint8_t status)
{
	eMcuGpioWritePin(pio, status);
}

int eBspGpioReadPin(uint32_t pio)
{
    return eMcuGpioReadPin(pio);
}

